<
language> (If You See What I Mean) An influential but
unimplemented computer programming language described in the
article by
Peter J. Landin cited below. Landin attempted to
capture all known programming language concepts, including
assignment and control operators such as
goto and
coroutines, within a single
lambda calculus based
framework.
ISWIM is an
imperative language with a functional core,
consisting of
sugared lambda calculus plus {mutable
variables} and
assignment. A powerful control mechanism,
Landin's
J operator, enables capture of the current
continuation (the
call/cc operator of
Scheme is a
simplified version). Being based on lambda calculus
ISWIM had
higher order functions and
lexically scoped variables.
The
operational semantics of
ISWIM are defined using
Landin's
SECD machine and use
call-by-value ({eager
evaluation}). To make
ISWIM look more like mathematical
notation, Landin replaced
ALGOL's semicolons and begin end
blocks with the
off-side rule and scoping based on
indentation.
An
ISWIM program is a single
expression qualified by "where"
clauses (auxiliary definitions including equations among
variables), conditional expressions and function definitions.
With
CPL,
ISWIM was one of the first programming languages
to use "where" clauses.
New
data types could be defined as a (possibly recursive)
sum of products like the
algebraic data types found in
modern functional languages.
ISWIM variables were probably
dynamically typed but Landin may have planned some form of
type inference.
Concepts from
ISWIM appear in Art Evan's
PAL and John
Reynold's
Gedanken, Milner's
ML and purely functional
languages with lazy evaluation like
SASL,
Miranda and
Haskell.
[
{"The Next 700 Programming Languages"
(http://www.cs.utah.edu/ISWIMwilson/compilers/old/papers/p157-landin.pdf)},
P.J. Landin, CACM 9(3):157-166, Mar 1966].
(2007-03-20)